/**
 * PM2 进程管理配置文件
 * 用于多交易所监控系统的进程守护
 */

module.exports = {
  apps: [
    {
      // 应用基本信息
      name: 'multi-exchange-monitor',
      script: 'src/app.js',
      
      // 进程管理
      instances: 1,
      exec_mode: 'fork',
      
      // 自动重启配置
      autorestart: true,
      watch: false,  // 生产环境建议关闭文件监听
      max_memory_restart: '500M',
      
      // 重启策略
      restart_delay: 4000,  // 重启延迟4秒
      max_restarts: 10,     // 最大重启次数
      min_uptime: '10s',    // 最小运行时间
      
      // 环境变量
      env: {
        NODE_ENV: 'production',
        LOG_LEVEL: 'INFO'
      },
      
      // 开发环境配置
      env_development: {
        NODE_ENV: 'development',
        LOG_LEVEL: 'DEBUG'
      },
      
      // 日志配置
      log_type: 'json',
      log_date_format: 'YYYY-MM-DD HH:mm:ss Z',
      error_file: './logs/pm2-error.log',
      out_file: './logs/pm2-out.log',
      log_file: './logs/pm2-combined.log',
      
      // 进程标识
      pid_file: './pids/multi-exchange-monitor.pid',
      
      // 其他配置
      kill_timeout: 5000,   // 强制杀死进程的超时时间
      listen_timeout: 3000, // 监听超时时间
      
      // 忽略的监听文件/目录（如果开启watch）
      ignore_watch: [
        'node_modules',
        'logs',
        'pids',
        'data',
        '.git'
      ],
      
      // 进程描述
      description: '多交易所交易对监控系统 - 支持Upbit、Binance等交易所的新增交易对实时监控',
      
      // 合并日志
      merge_logs: true,
      
      // 时间格式
      time: true
    }
  ],
  
  // 部署配置（可选）
  deploy: {
    production: {
      user: 'node',
      host: 'your-server.com',
      ref: 'origin/main',
      repo: 'git@github.com:your-repo/multi-exchange-monitor.git',
      path: '/var/www/multi-exchange-monitor',
      'pre-deploy-local': '',
      'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env production',
      'pre-setup': ''
    }
  }
};
